/*
 * @lc app=leetcode.cn id=49 lang=cpp
 *
 * [49] 字母异位词分组
 */

// @lc code=start
class Solution
{
public:
    vector<vector<string>> groupAnagrams(vector<string> &strs)
    {
        //找出给出字符串列表中字母异位词并将其放入一个列表中
        vector<vector<string>> res; //结果
        //对于一个字符串 先排序
        unordered_map<string, vector<string>> a; //map存储符合异位词的所有字符串
        for (string &str : strs)
        {
            string key = str;
            sort(key.begin(), key.end());
            a[key].emplace_back(str); //重点将排序后相同的字符串加入到异位词列表中
        }
        //遍历map
        for (auto it = a.begin(); it != a.end(); it++)
        {
            res.emplace_back(it->second);
        }
        return res;
    }
};
// @lc code=end

